package com.xuecheng.api.content;

import com.xuecheng.api.content.model.dto.CourseBaseDTO;
import com.xuecheng.api.content.model.qo.QueryCourseBaseModel;
import com.xuecheng.api.content.model.vo.CourseBaseVO;
import com.xuecheng.common.domain.page.PageRequestParams;
import com.xuecheng.common.domain.page.PageVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;


@Api(tags = "课程基础信息api",description = "对课程基本信息业务操作")
public interface CourseBaseApi {

    /*
    课程基础信息的查询
    1.方法名称
    2.传入参数
    3.传出参数
     */
    @ApiOperation("课程基础信息分页条件查询")
    PageVO queryCourseBaseList(PageRequestParams params, QueryCourseBaseModel model);

    //课程基本信息
    @ApiOperation("保存课程基本信息")
    @ApiImplicitParam(name = "courseBaseVO",value = "课程基本视图信息",required = true,dataType = "CourseBaseVO",paramType = "body")
    CourseBaseDTO createCourseBase(CourseBaseVO courseBaseVO);

    //根据ID获得基本信息
    @ApiOperation(value = "根据Id获取课程基本信息")
    @ApiImplicitParam(name = "courseBaseId", value = "课程基本信息ID", required = true, dataType = "Long", paramType = "path", example = "1")
    CourseBaseDTO getCourseBase(Long courseBaseId);

    //更新课程基本信息
    @ApiOperation("更新课程基本信息")
    @ApiImplicitParam(name = "courseBaseVO", value = "课程基本信息VO", required = true, dataType = "CourseBaseVO", paramType = "body")
    CourseBaseDTO modifyCourseBase(CourseBaseVO courseBaseVO);

    //课程基本信息删除
    @ApiOperation("根据ID删除课程信息")
    @ApiImplicitParam(name = "courseBaseId",value = "课程ID值",required = true,dataType = "Long",paramType = "path")
    void removeCourseBase (Long courseBaseId);

    //课程基本信息审核
    @ApiOperation("提交审核")
    @ApiImplicitParam(name = "courseBaseId",value = "课程ID值",required = true,dataType = "Long",paramType = "path")
    void commitCourseBase(Long courseBaseId);

    //课程预览
    @ApiOperation("课程预览")
    Object previewCourse(Long courseId,Long companyId);

    //课程发布
    @ApiOperation("课程发布")
    void publish(Long courseBaseId);



}
